【发布时间】:2014-02-20 20:30:51
【问题描述】:
大家好,
我在互联网上看到了很多关于此的帖子,但我仍然不明白如何准确地做到这一点。出于某种原因,我只能将我的 char 数组大写,直到有空格...
#include "stdafx.h"
#include <iostream>
#include <string>
std::string caps (char[]);
int main() {
const int MAXLEN = 256;
char chaine[ MAXLEN ] = "";
//Here i am inputting my list of char into my array
std::cout << "Chaîne ? ";
std::cin >> chaine;
//Calling my caps function
caps( chaine );
// results
std::cout << "Résultat: " << chaine << std::endl;
_gettch();
return 0;
}
std::string caps (char chaine []){
std::string check=chaine;
for (int i=0; i<=check.length(); i++){ //I added check.length() because it's the only way I know to check for the length of the array
chaine[i]=toupper(chaine[i]);
}
return chaine;
}
假设我写“Hey you”,输出将是“HEY”,仅此而已。我很困惑。感谢您的帮助!
【问题讨论】:
-
那是因为
std::cin >> wtv;停在空白处。你应该使用getline -
看看
std::cin >> chaine;之后的chaine有什么。那会给你一个答案。附:至少你可以使用gets或者它的类似物。 -
或使用
std::noskipws -
@James:这是一个常见的误解。
std::noskipwsis only for skipping leading whitespaces 而不是介于两者之间的。 -
@legends2k 我不知道!
getline是的,谢谢你告诉我。