gpt4 book ai didi

c++ - 使变量字符串忽略转义序列

转载 作者:行者123 更新时间:2023-11-28 04:10:12 27 4
gpt4 key购买 nike

我目前正面临将字符串解析为另一种方法的问题。问题是我想阻止它使用可能的转义序列。

我要解析的字符串不是常量,因此(据我所知)使用 R 声明使其成为原始文字在这里不适用,因为我必须使用变量。

此外,在某些情况下,字符串中包含用户输入(未转换),因此通过将“\”字符替换为“\\”来简单地转义这些序列也不是一种选择,输入也可以包含这些序列.

更准确地说:格式类似于 f.e. 的字符串""\x10\x4\x6(""一旦被解析为下一个函数,就会自动编译并转换为非人类可读的格式。我想阻止这种转换,而不是为了获得完全相同的字符串在需要使用它的下一个函数中。

希望有人能帮助我,因为我是 C++ 编程的新手。提前致谢:D

#include "pch.h"
#include <iostream>

int main()
{
stringTester stringtester;
std::string test = stringtester.exampleString();
stringtester.stringOutput(test);
}

std::string stringTester::exampleString()
{
std::string exampleInput = "\x10\x5\x1a\aTestInput\\n \x6(";
return exampleInput;
}

void stringTester::stringOutput(std::string test)
{
std::cout << test << std::endl;
}

她的实际输出(从控制台复制)是“TestInput\n ( ”,而想要的输出将是原始字符串“\x10\x5\x1a\aTestInput\n\x6(”

编辑:似乎在 SO 上无法显示未知字符。 "TestInput\n("

前后有xtra字符

最佳答案

当您在源代码中编写字符串文字 时,编译器 会将转义序列替换为它们所代表的字符。这就是为什么示例中的 quoted string 变成了废话。修复那个的方法是用两个反斜杠替换每个反斜杠,或者使它成为原始字符串文字。

当您的程序读取文本输入时,它不会进行任何这些调整。所以如果代码确实如此

std::string input;
std::cin >> input;

并且用户在控制台中键入字符 \x10\x5\x1a\aTestInput\\n\x6(input 将以字符 \x10\x5\x1a\aTestInput\\n\x6(.

一旦您获得了字符串,无论是作为字符串文字还是来自控制台的文本,您都可以使用它做任何您想做的事情。

关于c++ - 使变量字符串忽略转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57975395/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com