我有一个格式如下的文件:
Word1 num1 num2
Word2 Word3 num3 num4
<1>在Word1和num1之间有15个空格,由Word1,Word2和Word3等单词使用。
我想读取前15个字符并将它们放入字符串中,然后读取数字:
string[0] = "Word1 ";
number[0] = num1;
number[1] = num2;
string[1] = "Word2 Word3 ";
number[2] = num3;
number[3] = num4;
...
我目前用来从文件中读取数据的函数:
void read_data(){
ifstream datafile("U2.txt");
datafile>> product_count >> product2_count;
for (int i = 1; i <= product_count; i++) {
datafile>> product_cost[i];
}
for (int i = 1; i <= product2_count; i++) {
datafile>> products[i].product2_name;
for (int j = 1; j <= product_count; j++) {
datafile>> products[i].product_ammount[j];
}
}
datafile.close();
}
和数据文件本身:
6 5
12 25 35 2 3 9
Salotos 5 1 0 0 2 1
Kepsnys 6 3 12 9 0 0
Gaiva 0 0 1 15 1 0
Ledai Miau 0 0 5 5 5 1
Tortas 1 2 1 1 1 1
答案 0 :(得分:1)
我不会为你编写代码,但基本的想法是
getline()
到std::string
std::stringstream
,然后执行sstream >> num1[i] >> num2[i]
(其中numX
是int数组,i
是行索引。答案 1 :(得分:1)
你的问题在于
行datafile >> products[i].product2_name;
只能读取第一个空格。您需要像CharlesB建议的那样阅读它,使用string::substr
提取前15个字符,然后修剪。 See here
我强烈怀疑你的for
循环应该从0而不是1开始。