簡體   English   中英

vim或gcc的無法解釋的行為

[英]unexplained behaviour of vim or gcc

我運行這個簡單的程序:

#include <iostream>
#include <string>
using namespace std;

#include <boost/regex.hpp>

int main ()
{

//    boost::regex fullname_regex ("[A–Z]+[a–z]*, [A-Z][a–z]*");
boost::regex fullname_regex ("[A-Z]+[a-z]*, [A-Z][a-z]*");

string name;
cout << "Enter you full name: " << flush;

getline (cin, name);
if (! regex_match (name, fullname_regex))
{
    cout << "Error: name not entered correctly" << endl;
}

return 0;
}

我剛從某處復制過的。 當我取消注釋注釋行(原始復制/粘貼的一部分)並注釋下一個(由我自己鍵入)時,程序始終拒絕該名稱。 否則它按預期工作。 我正在使用vim。 我做了:set list以查看隱藏的字符,並且行是相同的。 我在原始行之前插入一個長注釋,以便將其向下移動,懷疑磁盤故障(非常舊的系統),但我仍然得到了同樣的錯誤。 這是一個沒有gui的ubuntu服務器,我用putty來做這個。 我不習慣linux下的這類問題,如果有人知道什么可以解釋這種奇怪的行為,請告訴我。 也許vim仍然使用原始頁面中的一些選項,這是在這里並且格式化,確實,但是:set list不顯示它們?

破折號不一樣。 評論的那些更長並且由不同的字符表示,因此被不同地解釋。 常見復制+粘貼錯誤。

http://en.wikipedia.org/wiki/Dash

那個-注釋掉的行中的字符是U + 2013 EN DASH ,而不是ASCII短划線U + 002d。

由於我使用的位圖字體有限,打開文件時Unicode字符已經突出,但您可以使用g8命令打印光標下字符的UTF-8編碼值,或使用:call search('[^\\x00-\\x7F]')找到下一個非ASCII字符。

當我在我的文本編輯器中粘貼代碼時,我立即看到注釋行中的第一個[AZ]實際上是使用長划線。

你想要一個簡單的破折號,這就是你輸入的內容。

您似乎對以下目的感到困惑:set list 它不是為了顯示“怪異”字符而設計的:只有一個非常小的集合(制表符,不間斷空格,尾隨空格......),請參閱:help 'list'了解詳細信息。

在這種情況下, set list不會有幫助。

常規空間變成不間斷的空間由set list但是當從Web或PDF或郵件客戶端和文本處理器進行復制粘貼時,您應該擔心其他特殊字符: "通常被替換為'通過'等等...前幾天我有一個很長的段落,其中所有''¹替換。在這種情況下很容易發現,但在其他情況下很容易錯過。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM