转换str字符串以用于std::getline分隔符的字符串
tring to convert str string for use in std::getline delimiter
im试图获取std::string
值并将其用作std::getline()
函数中的分隔符但无论我做什么,编译器都会给我错误。这就是我想做的:
std::stringstream ss(s);
std::string item;
std::string delim ="&&=";
int ssize = delim.size();
int newssize = ssize+1;
char del[SSIZE]; // also here when i try gives error
strcpy(del,delim.c_str());
char * delrr[1024] = delim.c_str(); //gives error
while(std::getline(ss,item,delrr)) {
elems.push_back(item);
}
我得到的错误总是关于constchar*转换。
error C2440: 'initializing' : cannot convert from 'const char *' to 'char *[1024]'
1> There are no conversions to array types, although there are conversions to references or pointers to arrays
1>.UT.cpp(179) : error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : expects 2 arguments - 3 provided
1> d:Program FilesMicrosoft Visual Studio 9.0VCincludestring(527) : see declaration of 'std::getline'
1>.UT.cpp(179) : error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : could not deduce template argument for 'std::basic_istream<_Elem,_Traits> &' from 'std::stringstream'
1> d:Program FilesMicrosoft Visual Studio 9.0VCincludestring(475) : see declaration of 'std::getline'
1>.UT.cpp(179) : error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : could not deduce template argument for 'std::basic_istream<_Elem,_Traits> &' from 'std::stringstream'
1> d:Program FilesMicrosoft Visual Studio 9.0VCincludestring(475) : see declaration of 'std::getline'
1>.UT.cpp(179) : error C2782: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : template parameter '_Elem' is ambiguous
1> d:Program FilesMicrosoft Visual Studio 9.0VCincludestring(475) : see declaration of 'std::getline'
1> could be 'char **'
1> or 'char'
更新:
找到了答案:如何在C++中标记字符串
http://www.codeproject.com/Articles/23198/C-String-Toolkit-StrTk-Tokenizer
getline()的第三个参数是char,而不是char数组。看看这个。如果需要多个分隔符或由多个字符组成的分隔符,则不能使用此函数。
使用find()和substr()。
std::string::c_str()为您提供一个指向字符数组的指针。为了用调用c_str()
的结果填充字符数组,您需要使用strcpy()
或strncpy()
作为实际复制C样式字符串的结果。
此外,您已经将delrr
声明为1024个字符的指针数组,而不是1024个字符,这真的是目的吗?
相关文章:
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- 而循环跳过 cin.getline() 对于 C 字符串
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- 字符串和getline字符
- 如何对字符串::getline进行长度限制
- 当 getline 用于获取整个字符串时,程序崩溃
- 使用getline和字符串函数C++程序中的分段错误
- 将 int 与字符串和 getline 一起使用,没有错误
- 无法使用 getline() 输入字符串.它只读取一个字符串
- 如何使此函数使用 getline 读取字符串并使用 int 执行相同的行为?
- std::getline 读取最后一个字符串两次
- 使用 getline 读取字符串,但每行中都有换行符
- 在getline()之后获取字符串
- 使用C 中字符串标头的getline()函数将第一个char存储在字符串对象中
- 使用 getline 和字符串流检查句子中的单词是否在文件中
- 在C++中使用字符串::getline跳过行读取文件
- 如何在c++中使用字符串getline从文本文件中读取时忽略/跳过空白