C++读取整行的方法

1.

string s;
	getline(cin, s);
	cout << s << endl;
2.
char s[100];
	scanf("%[^\n]%*c", s);
	printf("%s\n", s);
3.
char s[100];
	gets(s);
	printf("%s\n", s);

4.

char s[100];  
	cin.get(s,100);
	printf("%s\n", s);

5.
char s[100];
	cin.getline(s, 100);
	printf("%s\n", s);

以上来自:http://blog.csdn.net/nickwong_/article/details/38306609


下面介绍cin.get()和cin.getline()的区别:


可分为三种情况来看:
1)输入的字符串不超过限定大小
get(str,Size):读取所有字符,遇到'\n'时止,并且将'\n'留在输入缓冲区中,其将被下一个读取输入的操作捕获,影响该输入处理;
getline(str,Size):读取所有字符,遇到'\n'时止,并且将'\n'直接从输入缓冲区中删除掉,不会影响下面的输入处理。
2)输入的字符数超出限定的大小
        get(str,Size):读取Size-1个字符,并将str[Size-1]置为'\0',然后将剩余字符(包括'\n')留在输入缓冲区中,这些字符将被下一个读取输入的操作捕获,影响该输入处理;
        getline(str,Size):读取Size-1个字符,并将str[Size-1]置为'\0',剩余字符(包括'\n')留在输入缓冲区中,随即设置cin实效位(即if(!cin)的判断为真),关闭输入。其后的所有输入都无法得到任何东西,当然也无法得到输入缓冲区中剩余的字符串。但如果象本例一样用clear()重置cin,其后的输入便可用并会得到遗留在输入缓冲区中的字符。
3)输入一个空行(即直接回车)
        get(str,Size):str将得到'\0',并设置cin实效位,关闭输入,但回车依然留在输入缓冲区中,因此如果我们用clear()重置cin,其下一个读取输入的操作将捕获'\n';
        getline(str,Size):str将得到'\0',并将'\n'删除掉,不置实效位,不关闭输入。所以对于cin.getline来说空行是合法的输入,且不会影响下面的输入处理。
        至于使用那个更好,可能因人习惯不同而不同,仁者见仁智者见智。对于我们编程来说,总希望能有更好的容错性,即便用户输入了不合理的输入,程序也应该能够 提示并能够重新输入或继续正常处理,而因为用户的输入问题而导致程序错误或其后的所有输入都不可用显然不是我们希望的。使用get(str,Size)和 getline(str,Size),都可能碰到设置失效位,关闭输入的情况,故都是需要考虑到相应的防错处理的。


以上转自:https://zhidao.baidu.com/question/362328053.html

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在进C语言取回车换处理时,我们需要了解两种情况:一种是在取字符时忽略回车和换符,另一种是在字符串时忽略回车和换符。 对于第一种情况,我们可以使用getchar函数进处理。由于getchar函数在取时会将回车换符也当做普通字符入,因此我们需要在取时特判这两个字符并进跳过,避免影响处理结果。 对于第二种情况,我们可以使用fgets函数进处理。由于fgets函数会取一整行字符串,这就包括了回车换符,因此我们需要在字符串后将其最后的回车换符进处理,一般可以将其替换为空字符。 除此之外,我们还可以使用scanf函数来取特定格式的输入,如取整数时可以使用%d格式,此时会自动忽略回车和换符。但是当取字符或字符串时,我们需要自己进处理。 总之,在进C语言取回车换处理时,应该根据具体情况采用不同的方法,避免对程序的正确性造成影响。 ### 回答2: 在计算机编程中,回车和换是两个常见的字符,它们可以用于控制文本输入和输出的格式。在C语言中,取回车和换的过程需要使用特殊的函数和一些技巧来处理。 首先,需要明确两个概念:回车和换。回车是一种字符,通常表示为“\r”,它的作用是在输出中把光标移到首,一般搭配一个换字符使用。换是另一种字符,通常表示为“\n”,它的作用是在输出中换,让光标移到下一首。通常,一个回车和一个换会一起出现,表示将光标移到下一首。 在C语言中,使用scanf函数取标准输入时,输入中的回车和换字符都会被入缓冲区。如果不加处理,程序可能会出现意想不到的错误,因为缓冲区中可能还存在其他字符。 为了避免这种问题,可以使用getchar函数输入流中的每个字符,以判断输入是否结束。同时,还可以使用while循环和if语句来判断是否遇到回车和换字符,从而进处理。 另外,在输出文本时,也需要格外注意回车和换字符的处理。一般来说,可以使用printf函数输出字符串,但需要注意在字符串中添加特殊的转义字符“\r”和“\n”来表示回车和换。同时,还要特别注意换符的处理,因为不同的操作系统会使用不同的换符。 总之,处理回车和换符是C语言编程中一个常见的问题,需要注意使用相关函数和技巧来处理,以避免程序出现意想不到的错误。 ### 回答3: “回车换”是指在计算机输入中使用的一种控制符号,通常用于表示文本文件中的结束或者换的位置。在不同的计算机系统中,“回车换”符号的表示方式可能有所不同,因此在取文本文件时需要进特殊的处理。 在C语言中,可以使用fgets函数来取文本文件中的内容,并使用“\n”来表示回车换符号。具体的使用方式如下: char buffer[1024]; FILE* fp = fopen("example.txt", "r"); if(fp != NULL){ while(fgets(buffer, sizeof(buffer), fp)){ printf("%s", buffer); } fclose(fp); } 在上述代码中,我们首先打开了一个名为“example.txt”的文本文件,并使用fgets函数从文件中取内容,将取的结果存储在一个名为“buffer”的数组中。然后我们通过printf函数来输出取的结果,并使用fclose函数来关闭文件流。 需要注意的是,在取文本文件时,我们需要使用“二进制模式”或者“文本模式”来打开文件流,具体使用哪一种模式取决于目标文件的格式和操作系统的要求。同时,我们还需要注意使用正确的文件路径和文件名,避免出现文件取失败或者取错误的情况。 总之,在C语言中,取回车换符号需要使用特殊的控制符号“\n”,并结合fgets函数或者其他文件取函数来实现。同时,为了保证文件取的正确性和可靠性,我们需要选择适当的文件取模式,并注意处理文件路径和文件名等相关信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值