从字符串加载变量

时间:2016-05-20 20:06:35

标签: c++

我应该如何从字符串加载变量?: 例如,这是我的文本文件:

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是解决方案!

3 个答案:

答案 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