我正在尝试将已经用空格解析的字符串转换为int数组:
//example of string before parsing
arrElement = "1,2,3";
//parsing
for(int i =0; i < size; i++){
if(arrElements[i] == ','){
arrElements[i] = ' ';
}
}
//string is now "1 2 3"
//trying to convert numbers only into int
stringstream str;
int intCount = 0;
int intNum[size];
for(int i = 0; i < size; i++){
str << arrElements[i];
if(str == " ") {
}
else {
str >> intNum[intCount];
intCount++;
}
}
我目前得到的结果有五个整数读取,而不是我做的例子中的三个。另外,当我打印出阵列时,我的数字完全不同:
209664128 32764 0 0 0
我有点理解这个问题,但我是新的c ++,所以我错了,我不确定如何解决这个问题。任何帮助将不胜感激。
答案 0 :(得分:0)
以下是一些使您的示例正常工作的最小修改。
我认为你应该避免std::stringstream::operator>>
和std::stringstream::operator<<
之间的连续调用。
//example of string before parsing
std::string arrElements = "1,2,3";
//parsing
for(int i =0; i < arrElements.size(); i++){
if(arrElements[i] == ','){
arrElements[i] = ' ';
}
}
//string is now "1 2 3"
//trying to convert numbers only into int
stringstream str(arrElements);
int intCount = 0;
static const int size = 3;
int intNum[size];
for(int i = 0; i < size; i++){
if(str == " ") {
}
else {
str >> intNum[intCount];
intCount++;
}
}