我只是尝试了一些东西并制作了以下代码。它应该用字符串中的每个单独的字母打印其ASCII等效字符。但是,当有空间时,它会停止转换。这是代码:
#include <iostream>
#include <string>
using namespace std;
void convertToASCII(string letter)
{
for (int i = 0; i < letter.length(); i++)
{
char x = letter.at(i);
cout << int(x) << endl;
}
}
int main()
{
string plainText;
cout << "Enter text to convert to ASCII: ";
cin >> plainText;
convertToASCII(plainText);
return 0;
}
关于为什么会发生这种情况的任何想法?
答案 0 :(得分:10)
cin >> plainText
从输入读取,但不包括第一个空白字符。您可能需要std::getline(cin, plainText)
。
参考文献:
答案 1 :(得分:2)
operator>>
上的格式化输入函数istream
如果遇到空格则停止从流中提取。所以你的字符串不包含其余的输入。
如果您希望阅读该行的结尾,请改为使用getline
:
string plainText;
cout << "Enter text to convert to ASCII: ";
getline(cin, plainText);
convertToASCII(plainText);
答案 2 :(得分:0)
只需使用getline,然后就不需要这样的东西你可以强制转换为字符串字母直接将其转换为ascii.Here Is My Code。
#include <iostream>
#include <string>
using namespace std;
void convertToASCII(string s)
{
for (int i = 0; i < s.length(); i++)
{
cout << (int)s[i]<< endl;
}
}
int main()
{
string plainText;
cout << "Enter text to convert to ASCII: ";
getline(cin,plainText);
convertToASCII(plainText);
return 0;
}
答案 3 :(得分:0)
这是我整理的东西。我使用了一个向量来存储将要生成的所有ASCII值。我们首先要求用户输入一个字符串。然后,我们使用类型转换并将这些值添加到向量中。我们还使用while循环来防止用户不输入任何内容。
# include <iostream>
# include <string>
# include <vector>
std::vector<int> converttoASCII (std::string s) //used a vector to store all our ASCII values
{
std::vector <int> vals; //vectpr creation
int ascChar;
for (int i = 0; i < s.length(); i++) //We interate through string passed and add to vectors
{
ascChar = s[i];
vals.push_back(ascChar);
}
return vals;
}
int main()
{
std::string toencode;
std::cout << "Please enter in a string to encode: ";
std::getline(std::cin, toencode);
while (toencode.length() == 0) //we used a for loop to prevent user from entering nothing.
{
std::cin.clear();
std::cout << "Must not be empty! Try Again.\n";
std::cout << "Please enter in a string to encode: ";
std::getline(std::cin, toencode);
}
std::vector <int> asciivals = converttoASCII(toencode);
for (int i : asciivals) //Print out the results of the vector
{
std::cout << i << "\n";
}
return 0;
}
参考文献:
答案 4 :(得分:0)
简单易行的代码
string mystring= "ABC DEF ++ -- ";
for (char c : mystring) cout << (int)c << endl;
这段代码会一一检查字符并输出等价的ascii值
输出:65 66 67 32 68 69 70 32 43 43 32 45 45 32
答案 5 :(得分:-1)
cin.ignore();
cin.getline(plaintext,100); // 100 (assumed) is the size of plaintext
使用这两行代码接受带有空格的字符串。