声明一个固定大小的字符串,然后输入

时间:2020-05-09 12:10:08

标签: c++ string

#include<bits/stdc++.h>
using namespace std;
int main(){
    int length;
    cin>>length;
    string s(length,'\0');
    cin>>s;
    cout<<s;
}

int上面的代码首先是im接受一个int长度,然后使用它来定义字符串的大小,但是问题是,当我cin>>s定义了长度之后,该字符串仍然比char的长度多 即OUTPUT->

3
Hello
Hello

在定义了字符串的长度之后,这应该不会发生

3 个答案:

答案 0 :(得分:1)

也许你想要

s

答案 1 :(得分:0)

The documentation说:

for ( let key in elements) { items.push( <Card> <CardBody> <CardTitle> {key} <Button className='btn-simple btn-icon btn-round xButton' color='danger' onClick={() => this.NotLearnt(key)}><FontAwesomeIcon icon={faTimes}/></Button> </CardTitle> <CardText className="meaning">{elements[key]}</CardText> </CardBody> </Card> ) }

从流中提取字符串

从输入流istream& operator>> (istream& is, string& str);中提取一个字符串,并将序列存储在is中,该序列将被覆盖(替换str的先前值)。 每个提取的字符都会附加到字符串,就像调用其成员str一样。

因此,当您执行操作时:

push_back

该字符串的内容将替换为您可以输入的任意大小的输入,因为字符被附加到字符串上,就像调用cin>>s; 一样。

答案 2 :(得分:0)

简短的回答:是的,应该。您会误解您给出的说明的含义,而与文档无关。

长答案:您创建了一个保留3个字符的空字符串。 push_backoperator>>指定了新值。旧值,丢失了3个字符的字符串。