c/c++로 라인단위로있는 특수문제 몽땅 없애기 방법?

stypr의 이미지

텍스트를 라인단위로 읽어서 특수문자들만 모조리 없애는 쉬운 방법이 있을까요?
뭔가 있을거 같은디...

purewell의 이미지

ifstream ifs;
ifs.open("test.txt");

char buf[1024];
ifs.getline(buf, sizeof(buf));

일단 한 줄 읽기는 이렇게 하죠

_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz

cedar의 이미지

특수문자를 없애는 데, 굳이 라인 단위로 읽을 필요가 있나요?
그냥 문자 단위로 읽어도 되지 않나요?

그리고 '특수문자'와 '특수문자가 아닌 문자'를 무엇으로 정의하는 지도 중요하겠네요.

doldori의 이미지

대충 다음과 같이 되지 않을까요?

	const char* special_chars = "!@#$%^&";
	string line;
	while (getline(cin, line))
	{
		string::size_type pos = line.find_first_of(special_chars);
		while (pos != string::npos)
		{
			line.erase(pos, 1);
			pos = line.find_first_of(special_chars, pos);
		}
		cout << line << endl;
	}
moonzoo의 이미지

Quote:
그리고 '특수문자'와 '특수문자가 아닌 문자'를 무엇으로 정의하는 지도 중요하겠네요.

위 말에 올인~

한 character 씩 읽으면서

아스키 코드 값을 비교하는 것이 어떨까요.

whitekid의 이미지

tr 명령어를 적절히 사용하면 가능할 것 같은데요..

$ tr -cd "[:print:]" < file1 > file2

What do you want to eat?

moonzoo의 이미지

whitekid wrote:
tr 명령어를 적절히 사용하면 가능할 것 같은데요..

$ tr -cd "[:print:]" < file1 > file2

c/c++ 이 아니므로 무효~

cedar의 이미지

cedar wrote:
특수문자를 없애는 데, 굳이 라인 단위로 읽을 필요가 있나요?
그냥 문자 단위로 읽어도 되지 않나요?

그리고 '특수문자'와 '특수문자가 아닌 문자'를 무엇으로 정의하는 지도 중요하겠네요.

일단 '특수문자'는 간단하게 ispunct(c) == true 인 것으로 정의해보죠.
그러면, 영문자, 한글, 숫자를 제외하고는 모두 특수문자가 되어버리죠.

using namespace std;

int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");

    remove_copy_if(
        istreambuf_iterator<char>(fin),
        istreambuf_iterator<char>(),
        ostreambuf_iterator<char>(fout),
        ispunct);
}

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.