string类的数组不用std::getline()怎么输入
时间: 2023-11-13 20:04:38 浏览: 121
如果您不想使用 `std::getline()` 函数,您可以使用 `std::cin` 直接输入字符串。以下是一个示例代码,演示如何输入一个包含3个字符串的 `std::string` 数组。
```c++
#include <iostream>
#include <string>
int main() {
const int SIZE = 3;
std::string strArr[SIZE];
for(int i = 0; i < SIZE; i++) {
std::cout << "Enter a string: ";
std::cin >> strArr[i];
}
std::cout << "You entered the following strings:" << std::endl;
for(int i = 0; i < SIZE; i++) {
std::cout << strArr[i] << std::endl;
}
return 0;
}
```
在上面的代码中,我们首先定义了一个包含3个 `std::string` 类型元素的数组 `strArr`。然后使用 `std::cin` 直接输入字符串并将其存储到数组中。最后,我们遍历数组并将输入的字符串输出到屏幕上。需要注意的是,使用 `std::cin` 输入字符串时,输入的字符串不能包含空格和换行符,否则只会输入空格或者换行符之前的部分。
相关问题
string数组怎么不用std::cin和std::string进行输入
可以使用C语言中的scanf函数或者C++中的std::getline函数来输入字符串数组。
使用scanf函数:
```c++
char str[100];
scanf("%s", str); // 输入字符串并存储到str数组中
```
使用std::getline函数:
```c++
#include <iostream>
int main() {
const int MAX_SIZE = 100;
char str[MAX_SIZE];
std::cin.getline(str, MAX_SIZE); // 输入字符串并存储到str数组中
return 0;
}
```
需要注意的是,使用scanf函数输入字符串时,输入的字符串中不能包含空格,否则只会读取空格前面的部分。而使用std::getline函数则可以读取包含空格的字符串。
#include <iostream> #include <string> std::string solution(std::string words, std::string msg){ std::string result; // TODO: int tStrLenW = strlen(words); int tStrLenM = strlen(msg); int tWordsFlag = 0; int tMsgFlag = 0; char* pCharText = nullptr; while(tStrLenW > tWordsFlag && tStrLenM > tMsgFlag) { if(words[tWordsFlag] == msg[tMsgFlag]) { strcat(pCharText, &msg[tMsgFlag]); tMsgFlag++; } else { tWordsFlag++; tMsgFlag = 0; } } if(strcasecmp(pCharText, msg) == 0) result =“Yes”; else result =“No”; return result; } int main() { std::string words; std::string msg; getline(std::cin, words);; getline(std::cin, msg);; std::string result = solution(words, msg); std::cout<<result<<std::endl; return 0; }
这段代码的功能是比较两个字符串是否匹配。如果匹配,返回字符串"Yes",否则返回字符串"No"。
函数`solution`的输入参数是两个字符串`words`和`msg`,输出参数是一个字符串`result`。函数首先定义了一个空字符串`result`,然后通过循环比较两个字符串的每个字符。每次比较时,如果两个字符相等,则将`msg`字符串中的这个字符拼接到一个新的字符数组`pCharText`的末尾,并将`tMsgFlag`加1。如果两个字符不相等,则将`tWordsFlag`加1,重新开始比较。最后,如果`pCharText`和`msg`相等,则将`result`设置为"Yes",否则将`result`设置为"No"。
然而,这段代码存在一些问题。首先,`pCharText`指针没有初始化,如果直接使用`strcat`函数将`msg`拼接到`pCharText`的末尾,会导致未定义的行为。应该先为`pCharText`分配足够的内存空间,然后再进行拼接操作。其次,代码中使用了`strcasecmp`函数比较字符串,但是在代码中未包含头文件`<strings.h>`,导致编译时会出现错误。
阅读全文