如何解决从文本文件中分别读取“ a-b-”之类的单词并删除
第一个问题是我有这样的代码可以从文本文件读取:
File >> product.projectNo >> product.date
>> product.productNo >> product.productQ
>> product.productTotalPrice;
然后我将productNo
,productQ
和productTotalPrice
写入文件,并用-
分隔,因为可以有多个。这是文本文件的示例:
17 5 17-7051-10- 9-8-11- 720-616-55-
最后一个720-616-55-
(productTotalPrice
)是价格列表。我需要分别阅读并添加它们。因此:720+616+55
。我该怎么办?
第二个问题是我需要删除其中任何一个,这意味着productNo
17-7051-10-
需要删除17-
。我该怎么办?
解决方法
问题的第一部分是从文件中读取每个单词。可以使用:
std::string word0,word1;
std::getline(file,word0,' ');
std::getline(file,word1,' ');
...
当然,以上代码假定正好有一个' '
被用作单词之间的分隔符。
下一个问题是解析您的价格。可以使用std::stoi
:
size_t index;
int price0 = `std::stoi(word,&index);
word = word.substr(index + 1);
int price1 = `std::stoi(word,&index);
word = word.substr(index + 1);
int price2 = `std::stoi(word);
int totalPrice = price0 + price1 + price2;
之所以有效,是因为std::stoi
返回的第一个字符的索引不是整数的一部分。因此,这将是数字之间的-
分隔符。
关于问题的第二部分:您不会将17-
删除为字符串。取而代之的是,您应该在将17
添加到总和之前将其忽略掉,或者在解析后将其从数字列表中删除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。