C++ 逐行读取文本文件,使用char*而不是字符串c++;
我有下一个代码:C++ 逐行读取文本文件,使用char*而不是字符串c++;,c++,C++,我有下一个代码: std::string line; std::ifstream myfile ("text.txt"); if (myfile.is_open()) { while ( myfile.good() ) { getline (myfile,line); std::cout << line << std::endl; } myfile.close(); } std::字符串行; s
std::string line;
std::ifstream myfile ("text.txt");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
std::cout << line << std::endl;
}
myfile.close();
}
std::字符串行;
std::ifstream myfile(“text.txt”);
如果(myfile.is_open())
{
while(myfile.good())
{
getline(myfile,line);
std::cout是的,如果你真的坚持的话。有一个版本的getline
是std::istream
的成员,它可以:
char buffer[1024];
std::ifstream myfile("text.txt");
while (myfile.getline(buffer, sizeof(buffer))
std::cout << buffer << "\n";
myfile.close();
是的,如果你真的坚持的话。有一个版本的getline
是std::istream
的一个成员,它可以:
char buffer[1024];
std::ifstream myfile("text.txt");
while (myfile.getline(buffer, sizeof(buffer))
std::cout << buffer << "\n";
myfile.close();
那么你是在寻找一个更像“C”的解决方案
#include<cstdio>
#define ENOUGH 1000
int main() {
char buffer[ENOUGH];
FILE* f = fopen("text.txt", "r");
while (true) {
if (fgets(buffer, ENOUGH, f) == NULL) break;
puts(buffer);
}
fclose(f);
return 0;
}
#包括
#定义足够的1000
int main(){
字符缓冲区[足够];
文件*f=fopen(“text.txt”,“r”);
while(true){
如果(fgets(缓冲区,足够,f)==NULL)中断;
放置(缓冲);
}
fclose(f);
返回0;
}
…再加上一些检查文件是否正确打开。在这种情况下,您对文件f
使用fgets()
,读取字符*缓冲区
。但是,缓冲区只分配了足够的空间,此限制也是fgets()的一个重要参数
函数。当到达足够多的-1个
字符时,它将停止读取该行,因此您应该确保足够多的
常量足够大
但是,如果您不是想用“C-like”的方式解决这个问题,而是仍然要使用
,那么您可能只想知道std::string
的C_str()
方法返回该std::string
的char*
表示,所以您正在寻找一个更“C-like”的解决方案
#include<cstdio>
#define ENOUGH 1000
int main() {
char buffer[ENOUGH];
FILE* f = fopen("text.txt", "r");
while (true) {
if (fgets(buffer, ENOUGH, f) == NULL) break;
puts(buffer);
}
fclose(f);
return 0;
}
#包括
#定义足够的1000
int main(){
字符缓冲区[足够];
文件*f=fopen(“text.txt”,“r”);
while(true){
如果(fgets(缓冲区,足够,f)==NULL)中断;
放置(缓冲);
}
fclose(f);
返回0;
}
…再加上一些检查文件是否正确打开。在这种情况下,您对文件f
使用fgets()
,读取字符*缓冲区
。但是,缓冲区只分配了足够的空间,此限制也是fgets()的一个重要参数
函数。当到达足够多的-1个
字符时,它将停止读取该行,因此您应该确保足够多的
常量足够大
但是如果你不是想用一种“C-like”的方式来解决这个问题,但是仍然要使用
,那么你可能只是想知道C_str()std::string的method
返回该std::string的char*
表示形式
您为什么要用char*
执行此操作?所以您想逐字符读取文本文件?不明白您的意思。是的,有一种简单的方法:line.c_str()
@Mat-我想在我的代码中使用与字符串类型不匹配的函数我有妻子和孩子,有一份好工作,还有一辆奔驰。有没有办法在失业、离婚和街头过同样的生活?你为什么要用char*
这样做?所以你想逐字符阅读文本文件?没有你的点..是的,有一个简单的方法:line.c_str()
@Mat-我想在我的代码中使用的函数与字符串类型不匹配。我有妻子和孩子,一份很棒的工作和一辆奔驰。有没有办法过失业、离婚和流落街头的生活?