不使用字符串从文件中读取
Reading from file without using string
我正在做一个我们不能使用 std::string
的学校项目。我怎样才能做到这一点? txt文件中的数据是用“;”分隔的,我们不知道字的长度。
示例:
apple1;apple2;apple3
mango1;mango2;mango3
我尝试了很多东西,但没有任何效果,总是出错。
我尝试使用 getline,但由于它是针对字符串的,因此无法正常工作。
我也尝试重新加载 operator<<
但它没有帮助。
有两个完全独立的 getline()
。一种是std::getline()
,它以一个std::string
作为参数。
但是 std::istream
中还有一个成员函数,它使用 char
的数组而不是 std::string
,例如:
#include <sstream>
#include <iostream>
int main() {
std::istringstream infile{"apple1;apple2;apple3"};
char buffer[256];
while (infile.getline(buffer, sizeof(buffer), ';'))
std::cout << buffer << "\n";
}
结果:
apple1
apple2
apple3
注意:虽然这符合学校禁止使用 std::string
的规定,但几乎没有其他情况有意义。
我正在做一个我们不能使用 std::string
的学校项目。我怎样才能做到这一点? txt文件中的数据是用“;”分隔的,我们不知道字的长度。
示例:
apple1;apple2;apple3
mango1;mango2;mango3
我尝试了很多东西,但没有任何效果,总是出错。
我尝试使用 getline,但由于它是针对字符串的,因此无法正常工作。
我也尝试重新加载 operator<<
但它没有帮助。
有两个完全独立的 getline()
。一种是std::getline()
,它以一个std::string
作为参数。
但是 std::istream
中还有一个成员函数,它使用 char
的数组而不是 std::string
,例如:
#include <sstream>
#include <iostream>
int main() {
std::istringstream infile{"apple1;apple2;apple3"};
char buffer[256];
while (infile.getline(buffer, sizeof(buffer), ';'))
std::cout << buffer << "\n";
}
结果:
apple1
apple2
apple3
注意:虽然这符合学校禁止使用 std::string
的规定,但几乎没有其他情况有意义。