Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将用户输入传递到char[]_C++ - Fatal编程技术网

C++ 如何将用户输入传递到char[]

C++ 如何将用户输入传递到char[],c++,C++,我按照一个示例反转了一个非常好的字符串,但我希望使用cin输入字符串,而不是将值硬编码为char文本[]。这能做到吗?我在谷歌上搜索了很多文章,但到目前为止还没有成功。 我试着使用c_str()和strcpy(编译器不喜欢我使用) //使用要反转的文本创建一个字符数组。 字符文本[]=“你好”; //获取数组中的字符数,将有一个额外的0,因此需要去掉1。 int nChars=sizeof(text)-1; coutint ReverseStringProg(){ 字符串文本; cout文本;

我按照一个示例反转了一个非常好的字符串,但我希望使用cin输入字符串,而不是将值硬编码为char文本[]。这能做到吗?我在谷歌上搜索了很多文章,但到目前为止还没有成功。 我试着使用c_str()和strcpy(编译器不喜欢我使用)

//使用要反转的文本创建一个字符数组。
字符文本[]=“你好”;
//获取数组中的字符数,将有一个额外的0,因此需要去掉1。
int nChars=sizeof(text)-1;
cout
int ReverseStringProg(){
字符串文本;
cout文本;
std::reverse(text.begin(),text.end());
库特
但我希望使用cin输入字符串,而不是将值硬编码到
char text[]

C++很容易使用<代码> STD::String < /C> >代替原始字符数组:

 std::string text;

 // ...

 std::getline(cin,text);
代码的其余部分可以处理
text.c_str()
返回的
const char*
指针,或者更好的方法是使用字符串的and
rend()
迭代器来获得一个反置副本:

std::copy(text::rbegin(), text.rend(),std::begin(text));
从c++17开始,您还可以使用该函数执行以下操作:

std::reverse(text.begin(), text.end());

如果您不喜欢
std::string
,有很多方法可以读入字符数组

注意:读取字符数组可能会使数组溢出。此外,数组中必须有NUL终止字符才能将数组视为C样式字符串。

使用
cin
您可以使用
cin
读取字符数组

char my_array[8];
std::cin >> my_array;
此技术将跳过初始空白,然后将字符读入
my_数组
,直到遇到空白或输入终止

注意:如果输入大于数组大小,则输入将继续写入超出数组末尾的内容,从而导致未定义的行为。创建大型数组可能会浪费内存。

使用
读取
您可以使用
read
方法读取固定数量的字符:
静态常量无符号整数限制=16

char your_array[LIMIT];
std::cin.read(your_array, LIMIT);
使用上述代码,您需要将NUL终止字符放置在适当的位置:

size_t count = std::cin.gcount();
if (count == LIMIT)
{
    --count;
}
your_array[count] = '\0';
使用
std::string
: 首选使用
std::string

std::string input_text;
std::cin >> input_text;  // Read space separated text, i.e. a *word*.
std::getline(std::cin, input_text);  // Read a line of text.  

使用<代码> STD::String 在C++中为天编程。我不确定这是如何简洁地回答你的问题。只有代码没有解释。“谢谢你的负面投票,这有很大帮助。”当然,这对未来的研究是有帮助的。那后面的部分呢?我正在回答问题的标题和第一句话。谢谢你。这真的很有帮助,你知道我想要实现什么,并提供了一些很好的解释。
size_t count = std::cin.gcount();
if (count == LIMIT)
{
    --count;
}
your_array[count] = '\0';
std::string input_text;
std::cin >> input_text;  // Read space separated text, i.e. a *word*.
std::getline(std::cin, input_text);  // Read a line of text.