提问人:Andrew 提问时间:9/11/2023 最后编辑:Mark RotteveelAndrew 更新时间:9/15/2023 访问量:69
检查字符串中的字符是否为空格不起作用
Checking whether a character in a string is a space does not work
问:
我需要在每个部分之前添加两个零,字符串中有 6 个数字,而不删除这些部分之间的空格。代码如下:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string EightByte_BinaryBuffer = "010000 010100 001001 000011"; //can provide full code with reading input from user if needed
for (int i = 0; i < EightByte_BinaryBuffer.length(); i++)
{
if (i == 0)
{
EightByte_BinaryBuffer.insert(i, "00");
}
else if (isspace(EightByte_BinaryBuffer.at(i)) == true) //output console just stays black for minute without any changes
{
EightByte_BinaryBuffer.insert(i, "00");
}
}
cout << EightByte_BinaryBuffer << endl;
}
我也尝试了这个替代方案,但它也不起作用:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string EightByte_BinaryBuffer = "010000 010100 001001 000011"; //can provide full code with reading input from user if needed
for (int i = 0; i < EightByte_BinaryBuffer.length(); i++)
{
if (i == 0)
{
EightByte_BinaryBuffer.insert(i, "00");
}
else if (EightByte_BinaryBuffer[i] == ' ')
{
EightByte_BinaryBuffer.insert(i, "00");
}
}
cout << EightByte_BinaryBuffer << endl;
}
对于上下文,我正在尝试复制 base64 转换器,但停留在步骤 5(将 6 位字节转换为 8 位字节)。以下是完整的算法: https://base64.guru/learn/base64-algorithm/encode
答:
0赞
Andrew
9/15/2023
#1
感谢@brian61354270指出我用“i”计数器的错误,我能够修复它:
#include <iostream>
#include <string>
using namespace std;
int main()
{
for (int i = 0; i < EightByte_BinaryBuffer.length(); i++)
{
if (i == 0)
{
EightByte_BinaryBuffer.insert(i, "00");
i += 2;
}
else if (EightByte_BinaryBuffer[i + 1] == ' ')
{
EightByte_BinaryBuffer.insert(i + 2, "00");
i += 2;
}
}
}
@paulmckenzie还建议使用输入流的替代方案:
//explanation of how this code works can be found in comments under the question
#include <iostream>
#include <string>
#include <sstream>
int main()
{
std::string EightByte_BinaryBuffer = "010000 010100 001001 000011";
std::istringstream strm(EightByte_BinaryBuffer);
std::string small_buf;
std::string new_buf;
while (strm >> small_buf)
new_buf.append("00" + small_buf + " ");
new_buf.pop_back();
std::cout << new_buf;
}
谢谢大家的帮助。
评论
i
i