[英]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.