im cố gắng để có std::string
giá trị và sử dụng nó như delimiter trong std::getline()
chức năng nhưng không có mater những gì tôi làm trình biên dịch mang lại cho tôi lỗi. đây là những gì tôi đang cố gắng thực hiện:Tring để chuyển đổi chuỗi str để sử dụng trong std :: getline delimiter
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);
}
lỗi nhận được luôn là về const char * convertion.
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 Files\Microsoft Visual Studio 9.0\VC\include\string(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 Files\Microsoft Visual Studio 9.0\VC\include\string(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 Files\Microsoft Visual Studio 9.0\VC\include\string(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 Files\Microsoft Visual Studio 9.0\VC\include\string(475) : see declaration of 'std::getline'
1> could be 'char **'
1> or 'char'
UPDATE:
tìm thấy câu trả lời: How do I tokenize a string in C++?
http://www.codeproject.com/Articles/23198/C-String-Toolkit-StrTk-Tokenizer
Bạn có thể muốn * char delrr [1024] * thay vì * char * delrr [1024] * – Gigi
Vui lòng quay lại và giải thích những gì bạn thực sự muốn làm bằng tiếng Anh mà không đề cập đến bất kỳ chi tiết triển khai nào. –
không thể chuyển đổi từ 'const char *' thành 'char [1024]' nếu tôi xóa * – user63898