对于我正在制作的函数,我将字符串作为参数并使用它来执行操作。但是,如果前面有反斜杠,我会特别处理字符串中的字符。但是,即使看到黑色的声音,我也遇到了问题!
std::string s = "01234\6";
std::cout << s << std::endl;
std::cout << s.at(5) << std::endl;
if(s.at(5)== '\\')
std::cout << "It's a backslash" << std::endl;
else
std::cout << "It's not a backslash" << std::endl;
输出
01234
It's not a backslash
如果mystring.at(i)=='\\',如果它根本没有出现,我该怎么检查?
输入将来自另一个文件(我无法修改),如
myfunc("% \% %");
如果我读取字符串,我会计算3'%'个字符(因此反斜杠不会忽略它),0'\'字符
编辑:编码我的计算方式
char percent = '%';
int current_index = 0;
int percent_count = 0;
int ret = str.find(percent, current_index);
while(ret != std::string::npos)
{
percent_count++;
current_index = ret +1;
ret = str.find(percent, current_index);
}
return percent_count;
答案 0 :(得分:3)
C ++支持三种转义序列:
简单转义序列。它是以下之一:
Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/hadoop/util/MongoConfigUtil
at WordCount.main(WordCount.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: com.mongodb.hadoop.util.MongoConfigUtil
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
八进制转义序列。它是以下之一:
\’ \" \? \\
\a \b \f \n \r \t \v
\ octal-digit
\ octal-digit octal-digit
\ octal-digit octal-digit octal-digit
是最着名的八进制转义序列,表示空字符。
十六进制转义序列。它是以下之一:
\0
使用时:
\x hexadecimal-digit
hexadecimal-escape-sequence hexadecimal-digit
std::string s = "01234\6";
部分表示八进制转义序列。它不代表两个字符。
与
相同\6
其中std::string s = "01234?";
是由八进制数?
表示的字符。
为了让6
作为字符串的元素,您需要使用:
\
答案 1 :(得分:0)
检查方法是正确的,但\
转义6
,因此\6
计算一次,您可以检查sizeof("12345\6")
,其中7或strlen("12345\6")
,这是6。
将"12345\6"
更改为"12345\\6"
。
答案 2 :(得分:0)
如果你在字符串中有反斜杠,那么<option value="$row[emp_id]">$row[emp_name]</option>
编译器就已经特别对它进行了处理:
C++
除非你的意思是你想要一个带有反斜杠的文本(例如,来自I / O)。在这种情况下,您应该放置std::string s = "01234\6"; //\6 is treated differently already, as unicode character \6, not as backslash + 6
以使您的编译器理解您将其视为真正的反斜杠而不是unicode字符:
\\
然后你可以测试你的程序。
答案 3 :(得分:0)
没有编译器C ++会将PATH
解释为反斜杠,因为它是escape character。您必须使用\
来表示字符串中的反斜杠。