在C++

2010-02-23 44 views
3

双引号的字符串如何在双引号字符串转换字符串空间。 例如: 我得到的字符串在C++

c:\program files\abc.bat 

我想这个字符串转换为“c:\program files\abc.bat”但前提是字符串中的空间。

+0

它是一个'的std :: string'或'为const char *'? – kennytm 2010-02-23 12:46:54

+0

它的std :: string – Avinash 2010-02-23 12:47:27

+0

你有什么需要发生,如果已经有一个字符串中使用双引号?这取决于是否有这样的不同是字符串中 – dave4420 2010-02-23 12:55:00

回答

5

假设STL字符串s包含要检查是否有空间的字符串:

if (s.find(' ') != std::string::npos) 
{ 
    s = '"' + s + '"'; 
} 
+0

使用''“而不是'”\“”'会更高效吗? – 2010-02-23 13:06:31

+0

是的,会的。我已经编辑了答案,谢谢。 – 2010-02-23 13:33:37

2

搜索空格。如果发现添加\”,以正面和字符串的结尾这将是一个逃脱引号

+0

空间?封闭在字符串之前”,搜索现有的‘并以\前缀他们。这将处理字符串’内。 – 2010-02-23 18:19:45

0
std::string str = get_your_input_somehow(); 

if (str.find(" ") != std::string::npos) { 
    str = "\"" + str + "\""; 
} 
+0

难道不该'str.find(”“)!=的std :: string ::非营利组织)'? – Manuel 2010-02-23 12:51:12

+0

如果在开始处有空白,则返回0。 – kennytm 2010-02-23 12:51:33

+0

在任何情况下使用int作为布尔时没有好的编程。 – 2010-02-23 12:52:39