C++ 将行的前X个字符读入字符串
我有一个格式如下的文件:C++ 将行的前X个字符读入字符串,c++,string,parsing,C++,String,Parsing,我有一个格式如下的文件: Word1 num1 num2 Word2 Word3 num3 num4 在Word1和num1之间有15个空格,由Word1、Word2和Word3等单词使用 我想读取前15个字符,并将其放入字符串中,然后读取数字: string[0] = "Word1 "; number[0] = num1; number[1] = num2; string[1] = "Word2 Word3 "; number[2] = num
Word1 num1 num2
Word2 Word3 num3 num4
在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();
}
我不会为您编写代码,但基本思想是
- 用
读取一行到getline()
std::string
- 取前15个字符,修剪以去除空间
- 用字符串的其余部分构建一个
,然后执行std::stringstream
(其中sstream>>num1[i]>>num2[i]
是int数组,而numX
是行的索引i
- 您的问题在于线路
datafile >> products[i].product2_name;
这只能读取到第一个空格。您需要像CharlesB建议的那样读取它,使用string::substr
提取前15个字符,然后修剪
我强烈怀疑你的
for
循环应该从0开始,而不是从1开始。你到目前为止都尝试了什么?到目前为止,我只是一次读一个单词,但这对我来说不起作用,因为如果有一个由2个或更多单词组成的字符串,它会将第一个单词读入一个字符串,然后将其余单词读入即将到来的整数,而不是同一个字符串,所以wh在INT应该是之前,它们返回0。基本上类似于“infle>>string>>number>>number”,如果您实际向我们展示代码会更好:)请您将标识符翻译成英语好吗?pr_kaina没有定义,文件的格式如何?用空格、制表符。。。?
datafile >> products[i].product2_name;