簡體   English   中英

聲明一個固定大小的字符串,然后接受輸入

[英]Declaring a string with fixed size and then taking input

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

int 上面的代碼首先我取一個 int 長度,然后用它來定義字符串的大小,但問題是當我在定義長度后cin>>s時,字符串仍然需要比長度更多的字符,即 OUTPUT->

3
Hello
Hello

這不應該在定義字符串的長度后發生,

也許你想要:

std::string s(length, '\0');
std::cin.get(s.data(), s.size());

文檔說:

istream& operator>> (istream& is, string& str);

從 stream 中提取字符串

從輸入 stream is中提取一個字符串,將序列存儲在str中,該序列被覆蓋( str的先前值被替換)。 每個提取的字符都附加到字符串中,就好像它的成員push_back被調用一樣。

所以,當你在做:

cin>>s;

字符串的內容將被替換為您的輸入,該輸入可以是任何大小,因為字符被附加到字符串中,就好像調用了push_back一樣。

簡短的回答:是的,應該。 您誤解了您給出的指令的含義,而不考慮文檔。

長答案:您創建了一個保留 3 個字符的空字符串。 operator>>s分配了新值。 舊值,3 個字符的字符串丟失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM