如何从文本文件 c++ 中读取具有一定长度空格的输入字符串
How to read input string with spaces of certain length from text file c++
我的问题是我正在尝试从文本文件中输入字符,字符串然后输入int。我知道如何使用 getline() 输入,但是在使用 get line() 函数后,不再有选项可以在字符串后面输入其余整数。我的问题是,如何输入一个字符,然后输入一个字符串(带空格)后跟 3 个整数?
数据.txt看起来像这样
a New York 5 7 9
b Virginia 10 2 5
c Los Angeles 25 15 6
这是我的代码:
int main()
{
string city;
double price;
int amt1, amt2, amt3;
char orderStatus;
ifstream warehouse;
ofstream output;
warehouse.open("data.txt");
output.open("dataOut.txt");
while (warehouse.good())
{
warehouse >> orderStatus;
output << orderStatus << "t";
getline(warehouse, city, 't');
//warehouse >> city;
output << city << endl;
//warehouse >> amt1;
//output << amt1 << "t";
//warehouse >> amt2;
//output << amt2 << "t";
//warehouse >> amt3;
//output << amt3;
}
warehouse.close();
output.close();
return 0;
}
感谢您非常需要帮助。
一个快速的解决方案是使用atoi
(链接到文档)。这听起来像家庭作业,所以我不想为你解决它(这有什么乐趣?),但你可以把值作为字符串拉进去。如果需要,您也可以一次手动将字符转换为整数并重建数字,但atoi
会处理所有字符。我猜这些是 std::string,所以你必须对它们调用c_str()
,因为 atoi 只接受 C 字符串。
这是我
对您的代码的编辑。我添加了一个warehouse >> noskipws >> orderStatus >> skipws;
来跳过第一个制表符分隔符。此外,在每次读取后添加一个if(!warehouse.good()) break;
,以防数据不完整。如果是C,我会做fscanf(file, " %c %[^t]s %d %d %d", ...)
.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string city;
double price;
int amt1, amt2, amt3;
char orderStatus;
ifstream warehouse;
ofstream output;
warehouse.open("data.txt");
output.open("dataOut.txt");
while (warehouse.good())
{
warehouse >> orderStatus;
if(!warehouse.good()) break;
output << orderStatus << "t";
// to skip the tab delimiter
warehouse >> noskipws >> orderStatus >> skipws;
if(!warehouse.good()) break;
getline(warehouse, city, 't');
if(!warehouse.good()) break;
output << city << "t";
warehouse >> amt1;
if(!warehouse.good()) break;
output << amt1 << "t";
warehouse >> amt2;
if(!warehouse.good()) break;
output << amt2 << "t";
warehouse >> amt3;
if(!warehouse.good()) break;
output << amt3 << endl;
}
warehouse.close();
output.close();
return 0;
}
相关文章:
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 移除前面有空格的前2个字符串
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 在字符串中插入空格
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 使用另一个字符串从字符串中删除空格
- 我还可以添加什么来按空格或空格正确拆分C++字符串?
- C++ "noskipws"没有按预期工作,如何正确允许字符串中的空格?
- 在 c++ 中逐行阅读字符串,不要以空格停止
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 如何存储包含多个空格的字符串 c++
- 在特定位置为字符串添加空格
- 有没有办法在 c++ 中获取带有空格的完整字符串?
- C++完全复制要字符串的字符列表,而不会忽略多个空格
- Winsock2:当我尝试发送带有空格的字符串时,该函数在遇到空格时似乎停止发送
- 从没有空格的字符串中提取整数
- 用于拆分空格字符串的程序不起作用
- 解析C++中的完整(从头到尾)字符串,包括所有空格
- 反转字符串中单词的位置,而不更改 O(1) 空格限制中特殊字符的顺序
- 如何获取我的区域设置的空格字符串?