... может быть таким простым вопросом, но я собираюсь написать простой код C++ для синтаксического анализа строки с использованием разделителя, я хочу, чтобы разделитель содержал несколько пробелов (фактически одно или несколько пробелов). Мой вопрос: возможно ли это сделать? мой код образца:Использование getline (param1, param2, param3) в C++, linux
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <stdlib.h>
#include <cstring>
#include <sstream>
using namespace std;
int main()
{
string str="HELLO THIS IS 888and777";
char buf[1000];
getline(buf, 1000);
string str(buf);
stringstream stream(buf);
string toStr;
getline(stream, toStr,' ');//here the delimiter is six spaces
string str1=tostr;
getline(stream, toStr,' ');//here the delimiter is two spaces
string str2=tostr;
getline(stream, toStr,' ');//here the delimiter is three spaces
string str3=tostr;
cout<<str1<<"\t"<<str2<<"\t"<<str3<<endl;
return 0;
}
но, я не могу использовать разделитель нескольких символов. любая идея пожалуйста. я получаю следующее сообщение об ошибке:
error: invalid conversion from ‘void*’ to ‘char**’
error: cannot convert ‘std::string’ to ‘size_t*’ for argument ‘2’ to ‘__ssize_t getline(char**, size_t*, FILE*)’
Вы не можете использовать 'getline' для этого. Вы также не можете использовать больше (или меньше) одного символа между одинарными кавычками. '' ''заставит вас уволить быстрее, чем вы можете сказать« поведение, определяемое реализацией ». –