这一行中包括空格、‘tab'符、字母等等。
11 个解决方案
#1
gets
#2
fgets 从流中取字符串
调用格式 #include<stdio.h>
char *fgets(char *s,int n,FILE *stream);
原型在 stdio.h
说明 fgets从参数stream指定的流中读入字符并存到参数s所指的串中。当读了n-1(n为参数)个字符或遇到一个换行符时,此函数停止读。fgets在串s
尾部保留换行符,并把一个空字符加在串后以表示串结束。
返回值 若调用成功,fgets返回由s所指的串,若遇到文件结束或发生错误,则返回空指针。
可移植性 fgets适用于UNIX系统,在ANSI C中定义。它在Kernighan和Ritchie中也作了定义。
调用格式 #include<stdio.h>
char *fgets(char *s,int n,FILE *stream);
原型在 stdio.h
说明 fgets从参数stream指定的流中读入字符并存到参数s所指的串中。当读了n-1(n为参数)个字符或遇到一个换行符时,此函数停止读。fgets在串s
尾部保留换行符,并把一个空字符加在串后以表示串结束。
返回值 若调用成功,fgets返回由s所指的串,若遇到文件结束或发生错误,则返回空指针。
可移植性 fgets适用于UNIX系统,在ANSI C中定义。它在Kernighan和Ritchie中也作了定义。
#3
string应该是C++的吧,用istream::getline或者getline都可以。
#4
定义一个最长字符串,和文本文件一行一样长,并赋予每个元素为字符串结束
符号‘0’,然后逐个把每行读取到字符串中,用fgets(char *s,int n,file *filepoint).输出就行了
符号‘0’,然后逐个把每行读取到字符串中,用fgets(char *s,int n,file *filepoint).输出就行了
#5
我写个函数给你:
1、你先把你的全部文体全部读入到一个string中。
2、用下而后的函数,用一次读一行。
string GetLine(const string& AllString);//AllString就是你读入的所有文本
int StartPos = 0; //记录一笔记录中指针现在的位置
string GetLine(const string& AllString)
{
string TempString;
int EndPos = 0;
unsigned int n= AllString.length();
if((StartPos >= 0) && (StartPos < n))
{
EndPos= AllString.find_first_of ("\n",StartPos);
if ((EndPos < 0) && (EndPos > n))
EndPos = n;
TempString = AllString.substr(StartPos, EndPos - StartPos);
StartPos = EndPos+1 ;
//return TempString;
}
else TempString = "!!!out"; //如果读到尾了,没有东西可以读了,就输出结果"!!!out"
return TempString;
}
1、你先把你的全部文体全部读入到一个string中。
2、用下而后的函数,用一次读一行。
string GetLine(const string& AllString);//AllString就是你读入的所有文本
int StartPos = 0; //记录一笔记录中指针现在的位置
string GetLine(const string& AllString)
{
string TempString;
int EndPos = 0;
unsigned int n= AllString.length();
if((StartPos >= 0) && (StartPos < n))
{
EndPos= AllString.find_first_of ("\n",StartPos);
if ((EndPos < 0) && (EndPos > n))
EndPos = n;
TempString = AllString.substr(StartPos, EndPos - StartPos);
StartPos = EndPos+1 ;
//return TempString;
}
else TempString = "!!!out"; //如果读到尾了,没有东西可以读了,就输出结果"!!!out"
return TempString;
}
#6
char *fgets(char *s,int n,FILE *stream)为什么是char?string行不行?
#7
to cure(矿泉水):
不是说了吗,用std::istream::getline或者std::getline都可以,直接支持std::string的。
不是说了吗,用std::istream::getline或者std::getline都可以,直接支持std::string的。
#8
你是指标准C++吗?
string str1;
getline(cin,str1);
string str1;
getline(cin,str1);
#9
是的。标准C++的这个函数也可的。
#pragma warning(disable:4786)
#include <string>
#include <iostream>
using namespace std ;
void main()
{
string s1;
cout << "Enter a sentence (use <space> as the delimiter):";
getline(cin,s1, '\n');
cout << "You entered: " << s1;
}
getline的最后一个参数指定遇到什么字符就中止读入。
#pragma warning(disable:4786)
#include <string>
#include <iostream>
using namespace std ;
void main()
{
string s1;
cout << "Enter a sentence (use <space> as the delimiter):";
getline(cin,s1, '\n');
cout << "You entered: " << s1;
}
getline的最后一个参数指定遇到什么字符就中止读入。
#10
to: shornmao(死猫)
我的开贴写了,不支持getline。我用的c++ builder
我的开贴写了,不支持getline。我用的c++ builder
#11
to 大家,getline虽然是标准,但编译器不支持也没办法。vc支持吗?
另外, alang_xy(浪人) ,你写的getline函数挺不错,建议宝蓝加到库里去吧。
另外, alang_xy(浪人) ,你写的getline函数挺不错,建议宝蓝加到库里去吧。
#1
gets
#2
fgets 从流中取字符串
调用格式 #include<stdio.h>
char *fgets(char *s,int n,FILE *stream);
原型在 stdio.h
说明 fgets从参数stream指定的流中读入字符并存到参数s所指的串中。当读了n-1(n为参数)个字符或遇到一个换行符时,此函数停止读。fgets在串s
尾部保留换行符,并把一个空字符加在串后以表示串结束。
返回值 若调用成功,fgets返回由s所指的串,若遇到文件结束或发生错误,则返回空指针。
可移植性 fgets适用于UNIX系统,在ANSI C中定义。它在Kernighan和Ritchie中也作了定义。
调用格式 #include<stdio.h>
char *fgets(char *s,int n,FILE *stream);
原型在 stdio.h
说明 fgets从参数stream指定的流中读入字符并存到参数s所指的串中。当读了n-1(n为参数)个字符或遇到一个换行符时,此函数停止读。fgets在串s
尾部保留换行符,并把一个空字符加在串后以表示串结束。
返回值 若调用成功,fgets返回由s所指的串,若遇到文件结束或发生错误,则返回空指针。
可移植性 fgets适用于UNIX系统,在ANSI C中定义。它在Kernighan和Ritchie中也作了定义。
#3
string应该是C++的吧,用istream::getline或者getline都可以。
#4
定义一个最长字符串,和文本文件一行一样长,并赋予每个元素为字符串结束
符号‘0’,然后逐个把每行读取到字符串中,用fgets(char *s,int n,file *filepoint).输出就行了
符号‘0’,然后逐个把每行读取到字符串中,用fgets(char *s,int n,file *filepoint).输出就行了
#5
我写个函数给你:
1、你先把你的全部文体全部读入到一个string中。
2、用下而后的函数,用一次读一行。
string GetLine(const string& AllString);//AllString就是你读入的所有文本
int StartPos = 0; //记录一笔记录中指针现在的位置
string GetLine(const string& AllString)
{
string TempString;
int EndPos = 0;
unsigned int n= AllString.length();
if((StartPos >= 0) && (StartPos < n))
{
EndPos= AllString.find_first_of ("\n",StartPos);
if ((EndPos < 0) && (EndPos > n))
EndPos = n;
TempString = AllString.substr(StartPos, EndPos - StartPos);
StartPos = EndPos+1 ;
//return TempString;
}
else TempString = "!!!out"; //如果读到尾了,没有东西可以读了,就输出结果"!!!out"
return TempString;
}
1、你先把你的全部文体全部读入到一个string中。
2、用下而后的函数,用一次读一行。
string GetLine(const string& AllString);//AllString就是你读入的所有文本
int StartPos = 0; //记录一笔记录中指针现在的位置
string GetLine(const string& AllString)
{
string TempString;
int EndPos = 0;
unsigned int n= AllString.length();
if((StartPos >= 0) && (StartPos < n))
{
EndPos= AllString.find_first_of ("\n",StartPos);
if ((EndPos < 0) && (EndPos > n))
EndPos = n;
TempString = AllString.substr(StartPos, EndPos - StartPos);
StartPos = EndPos+1 ;
//return TempString;
}
else TempString = "!!!out"; //如果读到尾了,没有东西可以读了,就输出结果"!!!out"
return TempString;
}
#6
char *fgets(char *s,int n,FILE *stream)为什么是char?string行不行?
#7
to cure(矿泉水):
不是说了吗,用std::istream::getline或者std::getline都可以,直接支持std::string的。
不是说了吗,用std::istream::getline或者std::getline都可以,直接支持std::string的。
#8
你是指标准C++吗?
string str1;
getline(cin,str1);
string str1;
getline(cin,str1);
#9
是的。标准C++的这个函数也可的。
#pragma warning(disable:4786)
#include <string>
#include <iostream>
using namespace std ;
void main()
{
string s1;
cout << "Enter a sentence (use <space> as the delimiter):";
getline(cin,s1, '\n');
cout << "You entered: " << s1;
}
getline的最后一个参数指定遇到什么字符就中止读入。
#pragma warning(disable:4786)
#include <string>
#include <iostream>
using namespace std ;
void main()
{
string s1;
cout << "Enter a sentence (use <space> as the delimiter):";
getline(cin,s1, '\n');
cout << "You entered: " << s1;
}
getline的最后一个参数指定遇到什么字符就中止读入。
#10
to: shornmao(死猫)
我的开贴写了,不支持getline。我用的c++ builder
我的开贴写了,不支持getline。我用的c++ builder
#11
to 大家,getline虽然是标准,但编译器不支持也没办法。vc支持吗?
另外, alang_xy(浪人) ,你写的getline函数挺不错,建议宝蓝加到库里去吧。
另外, alang_xy(浪人) ,你写的getline函数挺不错,建议宝蓝加到库里去吧。