我应该如何从字符串加载变量?: 例如,这是我的文本文件:
int:10
int:25
int:30
我如何将这些加载到数组中?这是我用来加载字符串的代码:
string loadedB[100];
ifstream loadfile;
loadfile.open("ints.txt");
if(!loadfile.is_open()){
MessageBoxA(0, "Could not open file!","Could not open file!", MB_OK);
return;
}
string line; int i = -1;
while(getline(loadfile, line)){ i++;
loadedB[i] = line;
}
loadfile.close();
for(int x = 0; x < count(loadedB); x++){
cout << loadedB[x] << endl;
}
我想做点什么:
int intarray[100];
loadfromstringarray(loadedB, intarray);
该代码将占用字符串的一部分(数字代码)并将该值放入数组中,如intarray[0] = 10;
等等
编辑:istringstream是解决方案!
答案 0 :(得分:1)
我个人喜欢古老的std::istringstream
对象:
const std::string example = "int: 10";
std::string prompt;
int value;
std::istringstream parse_stream(example);
std::getline(parse_stream, prompt, ':');
parse_stream >> value;
答案 1 :(得分:0)
我个人喜欢古老的sscanf C功能:
int intarray[100];
int i = 0;
while(getline(loadfile, line) && i < sizeof(intarray)/sizeof(*intarray))
{
sscanf(line.c_str(), "int: %d", intarray + i++);
}
答案 2 :(得分:0)
使用stoi
:
vector<int> ints;
ifstream loadfile("ints.txt");
string line;
while(getline(loadfile, line)) {
ints.push_back(stoi(line.substr(5))); // skip the first 5 chars of each line
}
for(int i : ints) {
cout << i << endl;
}
输出:
10
25
30