好吧,我到处都在寻找,但找不到正确的方法来做到这一点。我只是想接收一个字符串,将该字符串放入数组中并输出内容。但是,我想根据用户输入的字符串的大小来执行此操作。我遇到了奇怪的错误,例如不兼容,我想知道为什么,谢谢。
#include <iostream>
#include <array>
#include <string>
using namespace std;
int main()
{
int x = 4000;
string y;
cout << "Enter value";
getline(cin, y);
array<char, strlen(y)>state;
for(int i=0; i<strlen(y); ++i)
cout << state[i] << ' ';
system("PAUSE");
return 0;
}
最佳答案
std::array
需要一个编译时大小,所以不能用 strlen
实例化.此外,strlen
不适用于 std::string
, 它需要一个指向 char
的指针, 指向空终止字符串的开头。
你可以使用 std::vector<char>
相反:
std::string y;
std::cout << "Enter value";
std::getline(std::cin, y);
std::vector<char> state(y.begin(), y.end());
for(int i = 0; i < state.size(); ++i)
std::cout << state[i] << ' ';
另一方面,为什么不直接使用 string
y
直接地?你真的需要“数组”吗?
for(int i = 0; i < y.size(); ++i)
std::cout << y[i] << ' ';
关于c++ - strlen 函数与循环不兼容,循环变量不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20344857/