我是 C++ 新手,想知道如何使用 fstream 从文件中选择一定数量的字符并将其写入 C++ 中的字符串?
fstream ifile;
ifile.open("file.txt" ios::out);
ifile << "1234567890";
ifile.close();
然后以某种方式能够打开文件选择“567”并将其写入字符串缓冲区。谢谢
`
您可以使用格式化的输入 astd::string
最多读取一定数量的char
. 但是,这并不意味着确实会读取尽可能多的字符,因为当达到指定的字符数时输入停止:
std::string str;
if (std::cin >> std::setw(3) >> str) {
std::cout << "read '" << str << "'\n";
}
else {
std::cout << "failed to read string\n";
}
当然,在空格处中断可能有点烦人。当然,可以使用自定义std::ctype<char>
方面为流重新定义空白的含义:
#include <string>
#include <iostream>
#include <iomanip>
#include <locale>
struct ctype
: std::ctype<char>
{
ctype()
: std::ctype<char>(table)
{
}
std::ctype_base::mask table[std::ctype<char>::table_size];
};
int main()
{
std::string str;
std::cin.imbue(std::locale(std::locale(), new ctype));
if (std::cin >> std::setw(30) >> str) {
std::cout << "read '" << str << "'\n";
}
else {
std::cout << "failed to read string\n";
}
}
假设您需要打开文件流中的 3 个字符,从索引 4 开始:
char ra[7];
if (ifile.read(7)) {
std::string result(ra+4, ra+7);
} else {
// read failed
}
如果起始索引比4
您可能考虑的要大得多,seekg
或者ignore
,跳过不需要的字符而不是将它们读入缓冲区。