21xrx.com
2025-03-26 16:21:36 Wednesday
文章检索 我的文章 写文章
C++如何输入字符串数组且空格不作为结束标志?
2023-07-02 05:57:14 深夜i     32     0
C++ 输入 字符串数组 空格 结束标志

在C++中,输入字符串数组并确保空格不会被当作结束标志是一项非常常见的任务。通常,在输入字符串时,C++会将空格视为字符串的结尾。但是,有时我们需要输入一个包含空格的字符串数组,而空格又不能作为字符串的结尾。在这种情况下,我们可以使用以下方法来输入字符串数组。

1. 使用getline()函数

C++中的getline()函数可以读取整行文本,包括空格,并将其存储在一个字符串对象中。可以使用getline()函数来输入字符串数组,如下所示:

#include <iostream>
#include <string>
using namespace std;
int main() {
  string str[10];
  for (int i = 0; i < 10; i++) {
    cout << "Enter string " << i+1 << ": ";
    getline(cin, str[i]);
  }
  return 0;
}

在上面的示例中,我们定义了一个包含10个字符串的字符串数组,在循环中使用getline()函数输入字符串,并将其存储在字符串数组中。

2. 使用scanf()函数

C++中的scanf()函数可以读取文本,并根据指定格式将其存储在变量中。当使用scanf()函数输入字符串数组时,我们需要使用%[]转换说明符,它可以读取非空格字符,如下所示:

#include <stdio.h>
int main() {
  char str[10][100];
  for (int i = 0; i < 10; i++) {
    printf("Enter string %d: ", i+1);
    scanf("%[^\n]s", str[i]);
    getchar();
  }
  return 0;
}

在上面的示例中,我们定义了一个包含10个字符串的字符数组,在循环中使用scanf()函数输入字符串,并将其存储在字符数组中。%[^\n]s格式字符串告诉scanf()函数,读取除换行符以外的所有字符。

注意:在使用scanf()函数时,需要使用getchar()函数来清除输入缓冲区。

在输入字符串数组时,我们需要确保用于存储字符串的数组的大小足够大,以避免出现缓冲区溢出错误。另外,由于输入的字符串可能含有空格和其他特殊字符,我们需要对其进行适当的验证和处理。

  
  
下一篇: DevC++ 源代码

评论区

请求出错了